/*----------------------------------------------------------------
// Copyright (C) 2011  博览财经资讯服务有限公司
// 版权所有
// 文件名：DBCommCreater
// 文件功能描述：根据连接串, 产生公共数据访问类,并以连接串为字典放入Hash表
// 
// 创建标识:王家新
// 
// 修改标识：
// 修改描述：
//         
// 修改标识：
// 修改描述：
//----------------------------------------------------------------*/

using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Collections;

namespace Aij1.Utils
{
    /// <summary>
    /// 根据连接串, 产生公共数据访问类,并以连接串为字典放入Hash表
    /// </summary>
    public static class DBCommCreater
    {
        private static Hashtable connStrTable = new Hashtable();
        static Hashtable dbCommTable = new Hashtable();
    
        static DBCommCreater()
        {
            IDBComm sqlComm = new DBCommSql();
            dbCommTable.Add("System.Data.SqlClient", sqlComm);
            dbCommTable.Add("", sqlComm);
            //dbCommTable.Add("System.Data.OracleClient", new DBCommOracle());
            dbCommTable.Add("System.Data.OleDb", new DBCommOleDb());
            //dbCommTable.Add("IBM.Data.DB2", new DBCommDB2());

            foreach (ConnectionStringSettings settings in ConfigurationManager.ConnectionStrings)
            {
                connStrTable[settings.ConnectionString] = dbCommTable[settings.ProviderName];
            }
        }

        /// <summary>
        /// 根据连接串生成IDBComm接口的对象
        /// </summary>
        /// <param name="connStr"></param>
        /// <returns></returns>
        public static IDBComm CreateDBComm(string connStr)
        {
            return (IDBComm)connStrTable[connStr];
        }

        /// <summary>
        /// 将IDBComm对象放入字典中缓存
        /// </summary>
        /// <param name="connStr"></param>
        /// <param name="dbComm"></param>
        public static void Add(string connStr, IDBComm dbComm)
        {
            connStrTable[connStr] = dbComm;
        }
    }
}

